﻿#ifndef CTASK_CALENDAR_H
#define CTASK_CALENDAR_H
/********************************************************************************
** @ Date:2024/03/01
** @ Author: HanJiaXin
** @ Description:  任务日历类
** @ Log:初次建立界面
** @ Version:1.0.0
** @ Fun:展示任务日历界面信息

** @ Date:2024/03/22
** @ Modify: WeiXiaoYu
** @ Log:完善界面UI和编写相关功能
********************************************************************************/
#include <QWidget>
#include <QPushButton>
#include <QTextCharFormat>
#include <QDesktopWidget>
#include <QMessageBox>
#include <QDate>
#include <QComboBox>
#include "UTaskBriefInfo.h"
#include "ui_CTaskCalendar.h"
#include "CCustomCalendar.h"

class CRBasicDataBase;
class CTaskCalendar : public QWidget
{
	Q_OBJECT

public:
	CTaskCalendar(QWidget *parent = nullptr);
	~CTaskCalendar();

	//设置场景Guid
	void setSceneGuid(QString sSceneGuid, QMap<int, QString> mapTimeType, CRBasicDataBase* pRobData);

protected:
	/**
	* @brief showEvent 页面显示时触发
	* @param event 页面显示事件对象
	*/
	void showEvent(QShowEvent * event);

private:
	void setStyleSheetFile();	    //设置界面样式表
	void initConnect();             //初始化槽函数连接
	void initUI();                  //初始化界面
	void initData();                //初始化数据
	void setCurrentData(QDate date);//设置当前的日期
	QDate getCurrentData();         //获取当前的日期
	void initDateSelect();          //初始化年份和月份的下拉选择

private slots:
	void slotSelectYear();          //选择年
	void slotChangeCurrentYear(int nIndex);   //切换当前年份
	void slotSelectMonth();			//选择月
	void slotChangeCurrentMonth(int nIndex);  //切换当前月份
	void slotLastYear();            //切换为上一年
	void slotNextYear();			//切换为下一年
	void slotLastMonth();		    //切换为上一月
	void slotNextMonth();			//切换为下一月
	void slotRefreshDate(int nYear, int nMonth);	//刷新当前显示的日期
	void slotSelectedDate(QDate date);              //发送日期选择信号

signals:
	void sigSetDate(QDate date);

private:
	Ui::CTaskCalendarClass ui;
	CCustomCalendar *m_pCalendarWidget = nullptr;  //自定义日历控件
	QComboBox* m_pYearSelected;                    //年份选择
	QComboBox* m_pMonthSelected;                   //月份选择
	UTaskBriefInfo* m_pTaskBriefInfo;              //任务简要信息展示
	QString m_sSceneGuid;                          //场景Guid
};

#endif
